package main

import (
	"flag"
	"fmt"
)

//flag.TypeVar(Type 指针, flag 名, 默认值, 帮助信息)
func main() {
	// 定义命令行参数
	var name string
	var age int
	var married bool
	// 使用 flag.TypeVar 方法
	flag.StringVar(&name, "name", "张三", "名字信息")
	flag.IntVar(&age, "age", 0, "年龄信息")
	flag.BoolVar(&married, "married", false, "婚恋情况")

	// 命令行参数解析
	flag.Parse()

	// 返回的是指针，访问需使用*
	fmt.Println(name, age, married) // 李四 18 false

	//flag.Args() //返回命令行参数后的其他参数，以[]string类型
	//flag.NArg() //返回命令行参数后的其他参数个数
	//flag.NFlag() //返回使用的命令行参数个数
	fmt.Println("the number of used args is ", flag.NFlag()) // 返回使用的命令行参数个数
	fmt.Println("the number of other args ", flag.NArg())    // 返回命令行参数后的其他参数个数
	fmt.Println("the number of other args ", flag.Args())    // 返回命令行参数后的其他参数，以[]string类型

}
